package com.alison.entity;//package com.alison.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.math.BigDecimal;

@Data
@TableName("t_order")
public class OrderHorizontal {
//    @TableId(type = IdType.AUTO)
    /**
     * 数据库局限性：当使用数据库主键自增来生成唯一标识符时，在水平分片的场景下会有问题。
     * 因为自增主键是基于单个数据库实例生成的，在多个分片数据库环境中，每个分片都有自己的自增序列，这会导致不同分片之间的主键冲突。
     * 例如，分片 1 的自增主键可能达到 100，分片 2 的自增主键也可能达到 100，当合并或关联数据时，就无法通过主键来唯一标识记录。
     */
    // 水平分片的id需要在业务层实现，不能依赖数据库的主键自增
    // 分布式id
    @TableId(type = IdType.ASSIGN_ID)//分布式id
//    @TableId(type = IdType.AUTO)// 使用ShardingSphere-JDBC的全局序列配置
    private Long id;
    private String orderNo;
    private Long userId;
    private BigDecimal amount;
}
